java outOfMemoryError 与 stringbuilder
全部标签 我查看了JavaAPI和一些常见的第3方库,但我找不到合适的方法来完成String.replaceAll的功能,StringBuilder除外。我知道通过一些工作,它可以为StringBuffer完成,但我不想走这条路,因为StringBuffer比较慢。有谁知道任何第3方实用程序,或者是否有一段快速代码可以实现此功能? 最佳答案 String.replaceAll只是Matcher.replaceAll的一个便捷方法。Matcher是在Java中使用正则表达式的“实际”方式,并且允许许多更复杂的用例。此外,任何可以在String上
我如何在Java下将字节数组的一部分附加到StringBuilder对象?我有一段从InputStream读取到字节数组的函数。然后我想将我读到的任何内容附加到StringBuilder对象中:byte[]buffer=newbyte[4096];InputStreamis;////somesetupcode//while(is.available()>0){intlen=is.read(buffer);//Iwanttoappendbuffer[0]tobuffer[len]intoStringBuilderatthispoint} 最佳答案
有以下Java代码,用“\n”创建StringBuilder,即回车分隔符:while(scanner.hasNextLine()){sb.append(scanner.nextLine()).append("\n");}发生了,在最后一个字符串(行)之后有“\n”符号。如何从生成的StringBuilder对象中优雅地删除最后一个“\n”?谢谢。 最佳答案 这对我一直有效sb.setLength(sb.length()-1);操作非常轻量级,保持当前内容大小的内部值只会减少1。此外,如果您认为缓冲区可能为空,请在执行此操作之前检查
我想在我的代码中专门检查null或empty。Java中StringBuilder的empty和null是否相同?例如:StringBuilderstate=newStringBuilder();StringBuildererr=newStringBuilder();success=executeCommand(cmd,state,err);/*hereexecuteCommand()returnsemptyornullinstate,IcantmakechangesinexecuteCommand()socanIcheckitinmycodesomehowforstate,ifits
回答思路: 阐述String概念理解 存在问题和设计考量 总结体现的两个特性 StringBuilder/StringBuffer相同点和不同点 三者使用场景总结回答总结: String是Java中非常常见且基础的类,用于字符串的构造和管理,它是Immutable类的经典实现,是finalclass,所有的属性也都是final的所以无法对内部数据进行修改,原生的保证了线程安全;JDK8及其以前,底层数据是用char数组进行存储的,JDK9之后是byte数组存储的; String修改操作不当会产生大量的临时字符串,为了避免这样的问题,Ja
我正在编写一些代码以从Java访问Redis,因此我需要创建大量字符串作为键。当然,这些key有一个模式,我将重复为相同的访问重新生成相同的key。我正在考虑为生成的key实现缓存(基于DAO参数),但即使考虑到缓存的速度,我想知道加速是否值得复杂性。key由一个UUID和一个3-7个字符串组成。在这种情况下,StringBuilder是否足够慢以保证缓存? 最佳答案 只有分析可以肯定地告诉您,但是如果您正在缓存这些,您必须有某种方法从缓存中获取它们,并且这可能至少会产生与仅使用StringBuilder一样多的开销。StringB
我知道.NET中的System.Text.StringBuilder有一个AppendLine()方法,但是,我需要在一个StringBuilder。我知道您可以使用Insert()来附加一个字符串,但我似乎不能用一行来做,是否有我可以使用的下一行字符?我使用的是VB.NET,所以最好用VB.NET回答,但用C#回答也可以。 最佳答案 isthereanextlinecharacterIcanuse?您可以使用Environment.NewLineGetsthenewlinestringdefinedforthisenvironme
在C中,我正在研究一个管理字节缓冲区的“类”,允许将任意数据附加到末尾。我现在正在研究当底层数组填满时使用调用realloc自动调整大小。这对于曾经使用过Java或C#StringBuilder的人来说应该是有意义的。我了解如何调整大小。但是有没有人对每次调整大小时增加多少缓冲区有任何建议,并提供了理由?显然,在浪费的空间和过多的realloc调用(这可能会导致过多的复制)之间需要权衡取舍。我看过一些建议加倍的教程/文章。如果用户设法提供一个好的初始猜测,那似乎很浪费。是否值得尝试四舍五入到平台上对齐大小的两倍或倍数?有谁知道Java或C#在幕后做了什么?
我正在将文本文件的内容写入StringBuilder,然后我想使用正则表达式对StringBuilder中包含的文本执行一些查找/替换操作。我遇到了一个问题,因为StringBuilder替换函数无法接受正则表达式参数。我可以在普通字符串上使用Regex.Replace,但我的印象是这样做效率低下,因为.net字符串是不可变的,因此需要在内存中创建字符串的两个副本。一旦我更新了文本,我计划将其写回原始文件。解决我的问题的最好和最有效的方法是什么?编辑除了下面的答案外,我还发现了以下问题,这些问题也对我的问题有所启发-memory-efficiency-and-performance-o
如何有效地处理StringBuilder对象?如果用户一次生成多个报告,我的应用程序最终会使用大量内存。我在一些在线网站上看到以下内容可能会有所帮助:StringBuildersb=newStringBuilder(1000000);//loopgoeshereaddinglotsofstufftosbexampleObject.Text=sb.ToString();sb.Length=0;最后一行真的有用吗?还有其他处理方法吗?注意:这并没有真正阻止我的用户继续使用该应用程序。我只是想知道是否有避免冗余内存使用的方法。 最佳答案